package itheima10_abstract;
/*
    抽象:
        1.概念:
            说不清楚的,不够具体的,功能子类要有,但是具体如何实现,父类不管,子类自己决定

            举例:
                所有的动物都应该具备吃的能力,但是具体的怎么吃,吃什么,无法在父类中做统一规定,
                但是吃的能力子类必须具备,具体如何实现,父类不管,子类自己实现/决定

        2.抽象类中抽象方法存在的意义:强制要求子类必须具备的能力

        3.抽象类的定义格式:
            public abstract class 类名 {
                ...
            }

        4.抽象方法的定义格式:
            修饰符 abstract 返回值类型 方法名称(参数列表...);

            注意:
                (1)和以前定义方法一样,但是去掉{},添加abstract关键字
                (2)返回值类型和参数列表根据需求确定
                (3)含有抽象方法的类,必须定义为抽象类,但是抽象类中不一定含有抽象方法

        5.抽象类的使用
            (1)不能直接创建抽象类的对象
            (2)创建子类继承抽象父类
            (3)子类覆盖重写抽象父类中的所有的抽象方法
                去掉abstract关键字,添加{}
                快捷键: ctrl + i
            (4)创建子类对象
            (5)使用子类对象调用方法

        6.抽象类的注意事项:
            (1)抽象类不能创建对象，如果创建，编译无法通过而报错。只能创建其非抽象子类的对象
            (2)抽象类中，必须有构造方法，是供子类创建对象时，初始化父类成员使用的
            (3)抽象类中，不一定包含抽象方法，但是有抽象方法的类必定是抽象类

            (4)抽象类的子类，必须重写抽象父类中所有的抽象方法，否则，编译无法通过而报错。
                        除非该子类也是抽象类
 */
public class Demo10Abstract {
    public static void main(String[] args) {

    }
}
